<html>

<head>
    <meta charset="utf-8" />
<meta name="description" content="" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>
    Cookie（Seesion）与Token解析 | 面包and牛奶的小窝
</title>
<link rel="shortcut icon" href="https://mianbao-niunai.gitee.io/mianbao-niunai/favicon.ico?v=1661438432526">
<!-- <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous"> -->
<link href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.10.0/katex.min.css">
<link rel="stylesheet" href="https://mianbao-niunai.gitee.io/mianbao-niunai/styles/main.css">
<!-- js -->
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<script src="https://mianbao-niunai.gitee.io/mianbao-niunai/media/js/jquery.sticky-sidebar.min.js"></script>
<script src="https://cdn.bootcss.com/highlight.js/9.12.0/highlight.min.js"></script>
<script src="https://cdn.bootcss.com/moment.js/2.23.0/moment.min.js"></script>


        
</head>

<body>
    <div class="main">
        <div class="header">
    <div class="nav">
        <div class="logo">
            <a href="https://mianbao-niunai.gitee.io/mianbao-niunai">
                <img class="avatar" src="https://mianbao-niunai.gitee.io/mianbao-niunai/images/avatar.png?v=1661438432526" alt="">
            </a>
            <div class="site-title">
                <h1>
                    面包and牛奶的小窝
                </h1>
            </div>
        </div>
        <span class="menu-btn fa fa-align-justify"></span>
        <div class="menu-container">
            <ul>
                
                    
                            <li>
                                <a href="/" class="menu">
                                    首页
                                </a>
                            </li>
                            
                                
                    
                            <li>
                                <a href="/archives" class="menu">
                                    归档
                                </a>
                            </li>
                            
                                
                    
                            <li>
                                <a href="/tags" class="menu">
                                    标签
                                </a>
                            </li>
                            
                                
            </ul>
        </div>
    </div>
</div>

<script>
    $(document).ready(function() {
        $(".menu-btn").click(function() {
            $(".menu-container").slideToggle();
        });
        $(window).resize(function() {

            if (window.matchMedia('(min-width: 960px)').matches) {
                $(".menu-container").css('display', 'block')
            } else {
                $(".menu-container").css('display', 'none')
            }

        });
    });
</script>

            <div id="main-content" class="post-detail main-container">
                <!-- left -->
                <div id="content" class="main-container-left">
                    <article class="post i-card">
                        <h2 class="post-title">
                            Cookie（Seesion）与Token解析
                        </h2>
                        <div class="post-info">
                            <time class="post-time">2022-06-28</time>
                            
                                <a href="https://mianbao-niunai.gitee.io/mianbao-niunai/xin-xi-za-tan/" class="post-tag i-tag
                            i-tag-">
                            #信息杂谈
                        </a>
                                
                        </div>
                        
                            <div class="post-feature-image" style="background-image: url('https://mianbao-niunai.gitee.io/mianbao-niunai/post-images/cookieseesionyu-token-jie-xi.jpg')"></div>
                            
                                <div class="post-content">
                                    <h4 id="前言">前言</h4>
<p>今天，看许少面试视频的时候遇到了关于Seesion的讨论，很巧，我昨天刚刚逛了orange神的博客。里面有他对Seesion的一些内网运用小技巧。所以对三者进行深入研究后，有感而发，写下这篇文章。</p>
<h4 id="cookie的作用">Cookie的作用</h4>
<p>Cookie中文翻译为“甜饼”，它是由W3C组织提出对一种机制。目的是方便某些网站为了辨别用户身份（但是如果用户的电脑被黑了后，攻击者轻而易举的看见目标用户明文存储的账号密码），而产生的的一种方法。为了解决Cookie的不足之处，人们发展了Seesion（即 会话）来进行防御。由于HTTP是一种无状态的协议，服务器单从网络连接上无从知道客户身份。怎么办呢？就给客户端们颁发一个通行证吧，每人一个，无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理。Cookie实际上是一小段的文本信息。客户端请求服务器，如果服务器需要记录该用户状态，就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时，浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie，以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。</p>
<h4 id="seeion的诞生">Seeion的诞生</h4>
<p>我们在网络应用中称Seesion为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样，当用户在应用程序的Web页之间跳转时，存储在Session对象中的变量将不会丢失，而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web页时，如果该用户还没有会话，则Web服务器将自动创建一个 Session对象。当会话过期或被放弃后，服务器将终止该会话（Session的保存时一般比Cookie短）。（然而人们发现Seesion在应对大规模，并发的时候并不称心如意。Seesion是储存在服务器中的，服务器的内存也有限，还要考虑服务器的负载均衡又会造成二次浪费，所以产生了Token)</p>
<h6 id="session和cookie的特征区别">Session和cookie的特征区别</h6>
<p>session是存储在服务器的，而cookie是会返回给客户端的；</p>
<blockquote>
<p>客户端（浏览器）在发送请求的时候，会自动将存活、可用的cookie封装在请求头中和请求一起发送。SessionID会以类似于cookie的方式返回给客户端。SessionID是服务器用来识别、操作存储session值的 对象的。在服务器端，session的存储方式有文件方式、数据库方式，SessionID就是用来识别这个文件的 （文件名相关）、识别数据库的某一条记录。但是sessionID并不是session值。</p>
</blockquote>
<h6 id="cookie和session生命周期区别">cookie和session生命周期区别</h6>
<p>cookie的生命周期，一般来说，cookie的生命周期受到两个因素的影响</p>
<blockquote>
<p>1.服务器对生成cookie时限的设定 2.客户端是否保留了cookie。客户端是否保留cookie，只对客户端自身有影响，对其它封包工具是没有影响</p>
</blockquote>
<p>session的生命周期一般来说，session的生命周期也是受到两个因素的影响</p>
<blockquote>
<p>1.服务器对于session对象的保存的最大时间的设置</p>
<p>2.在客户端不需要的时候销毁Session</p>
</blockquote>
<h6 id="session和cookie数据存储大小区别">Session和cookie数据存储大小区别</h6>
<blockquote>
<p>单个cookie保存的数据不能超过4K，很多浏览器都限制一个站点最多保存20个cookie，而session则存储 与服务端，浏览器对其没有限制。cookie数据保存在客户端的浏览器；session数据保存在服务器端</p>
</blockquote>
<h4 id="token的诞生">Token的诞生</h4>
<p>Token的原理：客户端把用户的用户名和密码发到服务端服务端进行校验，校验成功会生成token,把token发送给客户端；客户端自己保存token, 再次请求就要在Http协议的请求头中带着token去访问服务端，和在服务端保存的token信息进行比对校验。</p>
<h6 id="jwt-json-web-token前端">JWT: json web token（前端）</h6>
<p>与普通Token一样都是访问资源的令牌，都可以记录用户信息，都是只有验证成功后才可以获取信息。不同的是普通Token服务端验证token信息要进行数据的查询操作;JWT验证token信息就不用，在服务端使用密钥校验就可以，不用数据库的查询。</p>
<p>我们可以进一步的分析token的代码由此可得，token有三部分组成：Heard；payload；签名。如果我们更改其中任意一个值，token就无法通过认证。</p>
<p>客户端（浏览器）在发送请求的时候，会自动将存活、可用的cookie封装在请求头中和请求一起发送。， SessionID会以类似于cookie的方式返回给客户端。SessionID是服务器用来识别、操作存储session值的 对象的。在服务器端，session的存储方式有文件方式、数据库方式，SessionID就是用来识别这个文件的 （文件名相关）、识别数据库的某一条记录。但是sessionID并不是session值。 cookie和session都是有其生命周期的： cookie的生命周期，一般来说，cookie的生命周期受到两个因素的影响 1.服务器对生成cookie时限的设定 2.客户端是否保留了cookie。客户端是否保留cookie，只对客户端自身有影响，对其它封包工具是没有影响 session的生命周期一般来说，session的生命周期也是受到两个因素的影响 1.服务器对于session对象的保存的最大时间的设置 2.在客户端不需要的时候销毁Session 数据存储大小不同： 单个cookie保存的数据不能超过4K，很多浏览器都限制一个站点最多保存20个cookie，而session则存储 与服务端，浏览器对其没有限制。cookie数据保存在客户端的浏览器，session数据保存在服务器端</p>
<p><strong>补充</strong>：</p>
<blockquote>
<p>session和cookie都是由服务器生成的，都是用来存储特定的值（键值对应)</p>
<p>token不会像cookie一样被自动添加，必须激活站内按钮进行post传递;csrf无法让被攻击站模拟出按钮点击动作（防御CSRF攻击）</p>
</blockquote>
<h5 id="token内网">Token内网</h5>
<p>不同的⽤户登录计算机后， 都会⽣成⼀个 Access Token ，这个 Token 在⽤户创建进程或者线程时会被使⽤，不断的拷贝，这也就解释了A⽤户创建⼀个进程而该进程没有B⽤户的权限。一般用户双击一个进程都会拷贝explorer.exe 的 Access Token</p>
<p>Windows有两种类型的Token：</p>
<blockquote>
<p>Delegation token(授权令牌): 用于交互会话登录(例如本地用户直接登录、远程桌面登录)</p>
<p>Impersonation token(模拟令牌): 用于非交互登录(利用net use访问共享文件夹)</p>
</blockquote>
<p>**补充：**两种token只在系统重启后清除；具有Delegation token(授权令牌)的用户在注销后，该Token将变成 Impersonation token(模拟令牌)，依旧有效。</p>
<p>Windows有两种类型的Token：</p>
<blockquote>
<ol>
<li>
<p>Delegation token(授权令牌):用于交互会话登录(例如本地用户直接登录、远程桌面登录)</p>
</li>
<li>
<p>Impersonation token(模拟令牌):用于非交互登录(利用net use访问共享文件夹)</p>
</li>
</ol>
</blockquote>
<p>可以这样理解：当前系统中的某个进程或者线程能访问什么样的系统资源，取决于当前令牌的权限[我们通过 exp提权或者永恒之蓝等得到的权限即为System，假如我们利⽤mimikatz和hashdump不能获得 administrator⽤户的密码，那我们只能通过令牌窃取进⾏降权，获得administrator⽤户的shell，从⽽以 administrator⽤户的身份启动某些服务 (某些服务只能通过administrator⽤户启动)</p>

                                </div>
                    </article>
                    <!--  -->
                    
                        <div class="next-post">
                            <div class="next">下一篇</div>
                            <a href="https://mianbao-niunai.gitee.io/mianbao-niunai/nei-wang-ti-quan/">
                                <h3 class="post-title">
                                    内网本地提权
                                </h3>
                            </a>
                        </div>
                        
                            <div id="disqus_thread"></div>
                            <div id="gitalk-container"></div>
                </div>
                <!-- middle -->
                <div class="main-container-middle"></div>
                <!-- right -->
                <div id="sidebar" class="main-container-right">
                    
                        <!-- toc -->
                        
    <div class="toc-card i-card ">
        <div class="toc-title i-card-title">目录</div>
        <div class="toc-content">
            <ul class="markdownIt-TOC">
<li>
<ul>
<li>
<ul>
<li>
<ul>
<li><a href="#%E5%89%8D%E8%A8%80">前言</a></li>
<li><a href="#cookie%E7%9A%84%E4%BD%9C%E7%94%A8">Cookie的作用</a></li>
<li><a href="#seeion%E7%9A%84%E8%AF%9E%E7%94%9F">Seeion的诞生</a><br>
*
<ul>
<li><a href="#session%E5%92%8Ccookie%E7%9A%84%E7%89%B9%E5%BE%81%E5%8C%BA%E5%88%AB">Session和cookie的特征区别</a></li>
<li><a href="#cookie%E5%92%8Csession%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E5%8C%BA%E5%88%AB">cookie和session生命周期区别</a></li>
<li><a href="#session%E5%92%8Ccookie%E6%95%B0%E6%8D%AE%E5%AD%98%E5%82%A8%E5%A4%A7%E5%B0%8F%E5%8C%BA%E5%88%AB">Session和cookie数据存储大小区别</a></li>
</ul>
</li>
<li><a href="#token%E7%9A%84%E8%AF%9E%E7%94%9F">Token的诞生</a><br>
*
<ul>
<li><a href="#jwt-json-web-token%E5%89%8D%E7%AB%AF">JWT: json web token（前端）</a></li>
<li><a href="#token%E5%86%85%E7%BD%91">Token内网</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>

        </div>
        <script>
            function locateCatelogList() {
                /*获取文章目录集合,可通过:header过滤器*/
                var alis = $('.post-content :header');
                /*获取侧边栏目录列表集合**/
                var sidebar_alis = $('.markdownIt-TOC a');
                /*获取滚动条到顶部的距离*/
                var scroll_height = $(window).scrollTop();
                for (var i = 0; i < alis.length; i++) {
                    /*获取锚点集合中的元素分别到顶点的距离*/
                    var a_height = $(alis[i]).offset().top;
                    if (a_height < scroll_height) {
                        /*高亮显示*/
                        sidebar_alis.removeClass('on');
                        $(sidebar_alis[i]).addClass('on');
                    }
                }
            }
            $(function() {
                /*绑定滚动事件 */
                $(window).bind('scroll', locateCatelogList);
            });
        </script>
    </div>
    
                            

                </div>




            </div>


            <div class="site-footer">
  Powered by <a href="https://mianbao-niunai.gitee.io"_blank">Gridea</a> | 
  <a class="rss" href="https://mianbao-niunai.gitee.io/mianbao-niunai/atom.xml" target="_blank">RSS</a>
</div>

<script>
  hljs.initHighlightingOnLoad()
</script>


    </div>
    <script>
        $('#sidebar').stickySidebar({
            topSpacing: 80,
            // bottomSpacing: 60
        });
    </script>
    
</body>

</html>